using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace VRCPRServer.Models
{  
    /// <summary>
    /// Indicates the type of an ACM (<see cref="WlanNotificationSource.ACM"/>) notification.
    /// </summary>
    /// <remarks>
    /// The enumeration identifiers correspond to the native <c>wlan_notification_acm_</c> identifiers.
    /// On Windows XP SP2, only the <c>ConnectionComplete</c> and <c>Disconnected</c> notifications are available.
    /// </remarks>
    public enum WlanNotificationCodeAcm
    {
        /// <summary>
        /// 自动配置列表可用
        /// </summary>
        [Description("自动配置列表可用")]
        AutoconfEnabled = 1,

        /// <summary>
        /// 自动配置列表不可用
        /// </summary>
        [Description("自动配置列表不可用")]
        AutoconfDisabled,

        /// <summary>
        /// 后台扫描可用
        /// </summary>
        [Description("后台扫描可用")]
        BackgroundScanEnabled,

        /// <summary>
        /// 后台扫描不可用
        /// </summary>
        [Description("后台扫描不可用")]
        BackgroundScanDisabled,
        BssTypeChange,

        /// <summary>
        /// WiFi开关改变
        /// </summary>
        [Description("WiFi开关改变")]
        PowerSettingChange,

        /// <summary>
        /// 扫描完成
        /// </summary>
        [Description("扫描完成")]
        ScanComplete,

        /// <summary>
        /// 扫描失败
        /// </summary>
        [Description("扫描失败")]
        ScanFail,

        /// <summary>
        /// 开始连接
        /// </summary>
        [Description("开始连接")]
        ConnectionStart,

        /// <summary>
        /// 连接完成
        /// </summary>
        [Description("连接完成")]
        ConnectionComplete,

        /// <summary>
        /// 尝试连接失败
        /// </summary>
        [Description("尝试连接失败")]
        ConnectionAttemptFail,

        /// <summary>
        /// 过滤器列表改变
        /// </summary>
        [Description("过滤器列表改变")]
        FilterListChange,

        InterfaceArrival,
        InterfaceRemoval,
        ProfileChange,
        ProfileNameChange,
        ProfilesExhausted,

        /// <summary>
        /// 网络不可用
        /// </summary>
        [Description("网络不可用")]
        NetworkNotAvailable,

        /// <summary>
        /// 网络可用
        /// </summary>
        [Description("网络可用")]
        NetworkAvailable,

        /// <summary>
        /// 正在断开连接
        /// </summary>
        [Description("正在断开连接")]
        Disconnecting,

        /// <summary>
        /// 完成断开连接
        /// </summary>
        [Description("完成断开连接")]
        Disconnected,
        AdhocNetworkStateChange
    }

    /// <summary>
    /// Indicates the type of an MSM (<see cref="WlanNotificationSource.MSM"/>) notification.
    /// </summary>
    /// <remarks>
    /// The enumeration identifiers correspond to the native <c>wlan_notification_msm_</c> identifiers.
    /// </remarks>
    public enum WlanNotificationCodeMsm
    {
        Associating = 1,
        Associated,

        /// <summary>
        /// 正在验证
        /// </summary>
        [Description("正在验证")]
        Authenticating,

        /// <summary>
        /// 已连接
        /// </summary>
        [Description("已连接")]
        Connected,

        [Description("开始验证")]
        RoamingStart,
        [Description("验证完成")]
        RoamingEnd,
        RadioStateChange,
        SignalQualityChange,
        Disassociating,

        [Description("连接失败")]
        Disconnected,

        PeerJoin,
        PeerLeave,
        AdapterRemoval,
        AdapterOperationModeChange
    }

    /// <summary>
    /// WiFi连接状态
    /// </summary>
    public enum WiFiStatus
    {
        /// <summary>
        /// 正在连接
        /// </summary>
        [Description("正在连接")]
        Connecting = 0,

        /// <summary>
        /// 已经连接
        /// </summary>
        [Description("已连接")]
        Connected = 1,

        /// <summary>
        /// 正在断开
        /// </summary>
        [Description("正在断开")]
        Disconnecting = 2,

        /// <summary>
        /// 已经断开
        /// </summary>
        [Description("已断开")]
        Disconnected = 3,

        /// <summary>
        /// 尝试连接失败
        /// </summary>
        [Description("尝试连接失败")]
        ConnectionFail = 4,

        /// <summary>
        /// 未连接
        /// </summary>
        [Description("未连接")]
        NotConnected = 5,

        /// <summary>
        /// 
        /// </summary>
        [Description("")]
        None = 6,
    }
    public enum ADDRESSFAM
    {
        IPv4,
        IPv6
    }
}